package main

import "fmt"

/*
类似于struct中引入匿名字段实现字段继承，接口也可以引入其他接口继承其中抽象方法
*/
type ParentDo interface {
	eat()
	sleep()
}

type SonDo interface {
	ParentDo //引入父接口，继承其抽象方法
	play()
}

type Parent struct {
}

type Son struct {
	Parent
}

func (p Parent) eat() {
	fmt.Println("parent吃饭")
}

func (p Parent) sleep() {
	fmt.Println("parent睡觉")
}

func (s Son) play() {
	fmt.Println("son玩")
}

func main() {
	p := Parent{}
	s := Son{p}

	var p2 ParentDo = p
	var s2 SonDo = s

	p2.eat()
	p2.sleep()
	s2.play()

}
